<html>

	<head>
		<title>9.3 使用外部配置文件</title>
		<meta charset="utf-8" />
		<meta name="author" content="jfinal,yaolin" />
		<meta name="Keywords" content="" />
		<link rel="stylesheet" type="text/css" href="../../css/global.css" />
	</head>

	<body>
		<h1>9.3 使用外部配置文件</h1>
		<p>上一个示例仅展示了 java 硬编码式的配置， 更多的应用场景是使用外部配置文件，灵活 配置调度策略，以便于随时改变调度策略，如下是外部配置的代码示例：
		</p>
		<img src="../../images/cron4Plugin/9.3.1.png" />
		<p>上图中的 cront4j 是所谓的配置名称： configName，可以随便取名，这个名称在创建 Cron4jPlugin 对象时会被用到，如果创建 Cron4jPlugin 对象时不提供名称则默认值为“ cront4j”。</p>
		<p>上图中的 configName 后面紧跟着的是 task1、 task2，表示当前配置的两个 task 的名称， 这两个名称规定了后续的配置将以其打头，例如后面的 task1.cron、task2.cron 都是以这两个 task 名称打头的。
		</p>
		<p>上图中的 task1.cron 是指该 task 的 cron 表达式， task1.class 是指该 task 要调度的目标 java 类，该 java 类需要实现 Runnable 接口， task1.daemon 是指被调度的任务线程是否为守护线程， task1.enable 是指该 task 是开启还是停用，这个配置不是必须的，可以省略，省略时默认表示 开启。同理 task2 的配置与 task1 的意义相同，只是 taskName 不同。</p>
		<p>总结一下： configName 指定 taskName， 多个 taskName 可以逗号分隔，而每个 taskName 指定具体的 task，每个具体的 task 有四项配置：cron、class、deamon、enable，每个配置以 taskName打头。</p>
		<p>假定配置文件名为 config.txt， 配置完成以后 Cron4jPlugin 的创建方式可以如下：</p>
		<img src="../../images/cron4Plugin/9.3.2.png" />
		<p>以上代码中，前四行代码是利用配置文件创建 Cron4jPlugin 对象的四种方式，第一行代码 只传入了配置文件名，省去了 configName，那么默认值为“ cron4j”。第二代码与第一行代码 本质一样，只是指定了其 configName。第三与第四行代码与前两行代码类似，仅仅是利用 PropKit 对其进行了加载。</p>
		<p>请注意： 这里所说的 configName，就是前面示例中配置项 <span class="red">cron4j</span>=task1, task2 中的 <span class="red">“ cron4j”</span>，这个 configName 相当于就是 Cron4jPlugin 寻找的配置入口。</p>
	</body>

</html>